package com.ce.util.chart;

import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;

/**
* 嫦娥软件有限公司 版权所有 2013
* 创建人：andy
* 创建日期：2010-9-25
* 创建时间：下午03:42:53
* 功能描述：饼状图的XML文件生成类，可使用此类方便的构造柱状图的数据文件，使用时调用toString方法即可。如：
* 		PieChart pc = new PieChart("柱状统计图");
* 		pc.addData("男", "114").addAttribute("url", "http://www.b.com");
* 		pc.addData("女", "100","#00ff00");
* 		System.out.println(pc);
* ==============================================
* 修改历史
* 修改人		修改时间		修改原因
*
* ==============================================
*/
public class PieChart extends AbstractChart {
	private List<ChartData> data;
	
	public static void main(String[] args){
		PieChart pc = new PieChart("饼状统计图");
		pc.addData("好人", "200").addAttribute("url", "http://www.b.com");
		pc.addData("坏人", "20","#00ff00");
		System.out.println(pc);
	}
	
	public PieChart(String title) {
		super(title);
		this.data = new ArrayList<ChartData>();
	}

	public PieChart(String title, List<ChartData> data) {
		this(title);
		if(data!=null)
			this.data = data;
	}

	/**
	* 开发人：andy
	* 开发日期: 2013-9-25  下午03:44:08
	* 功能描述: 添加要显示的数据
	* 方法的参数和返回值: 
	* @param title	统计图中的显示标签
	* @param value	统计图中的显示值
	* @return		返回添加后的数据对象，可在返回的对象上附加其它属性
	*/
	public ChartData addData(String title, String value){
		return this.addData(title, value, null);
	}

	/**
	* 开发人：andy
	* 开发日期: 2013-9-25  下午03:46:12
	* 功能描述: 添加要显示的数据
	* 方法的参数和返回值: 
	* @param title	统计图中的显示标签
	* @param value	统计图中的显示值
	* @param color	饼块显示的颜色
	* @return		返回添加后的数据对象，可在返回的对象上附加其它属性
	*/
	public ChartData addData(String title, String value, String color){
		ChartData item = new ChartData(title,value,color);
		data.add(item);
		return item;
	}
	/**
	* 开发人：sjt
	* 开发日期: 2013-9-25  下午03:46:12
	* 功能描述: 移除指定的数据项
	* 方法的参数和返回值: 
	* @param title	统计图中的显示标签
	* @return	
	*/
	public void removeData(String title){
		data.remove(new ChartData(title,""));
	}
	public String toString(){
		StringWriter sw = new StringWriter();
		PrintWriter out = new PrintWriter(sw);
		out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
		root = new Element("pie");
		this.addTitle2Root();
		for(int i=0;i<data.size();i++){
			root.addChild(data.get(i).toElement());
		}
		out.print(root.toString());
		return sw.toString();
	}

	public List<ChartData> getData() {
		return data;
	}

	public void setData(List<ChartData> data) {
		this.data = data;
	}
}
